package com.whmall.service.crm.api;

import com.whmall.component.entity.dto.ApproveReqDTO;
import com.whmall.component.entity.dto.ProcessInstanceCompletedMessageReqDTO;
import com.whmall.component.entity.dto.UserTaskCompletedMessageReqDTO;
import com.whmall.component.entity.dto.UserTaskCreatedMessageReqDTO;
import com.whmall.service.crm.entity.dto.company.CompanyAndUserApplicationReqDTO;
import com.whmall.service.crm.entity.dto.company.CompanyAndUserApplicationRspDTO;

import java.util.List;
import java.util.Map;

public interface CompanyAndUserApplicationApi {

    /**
     * 根据id集合查询申请（通用）
     * @param ids
     * @return
     */
    Map<Long, CompanyAndUserApplicationRspDTO> selectByIds(List<Long> ids);

    /**
     * 查询申请（通用）
     * @param reqDTO
     * @return
     */
    List<CompanyAndUserApplicationRspDTO> selectBy(CompanyAndUserApplicationReqDTO reqDTO);

    /**
     * 用户任务创建（工作流回调）
     * @param message
     */
    void createUserTask(UserTaskCreatedMessageReqDTO message);

    /**
     * 审核（工作流回调）
     * @param message
     */
    void verifyUserTask(UserTaskCompletedMessageReqDTO message);

    /**
     * 审批结束（工作流回调）
     * @param message
     */
    void finishWorkflow(ProcessInstanceCompletedMessageReqDTO message);

    /**
     * 审核过程中修改业务参数
     * @param reqDTO
     */
    void updateApplicantParam(ApproveReqDTO reqDTO);

    /**
     * 更新流程实例id
     * @param id
     * @param processInstanceId
     */
    void updateProcessInstanceId(Long id, String processInstanceId);

}
